package com.evil.application.service;

import com.evil.application.pojo.dto.form.control.ControlBaseInfoDTO;
import com.evil.application.pojo.dto.order.exp.ExcelExportResultDTO;
import com.evil.application.pojo.dto.order.exp.OrderExportReqDTO;
import com.evil.application.pojo.dto.order.imp.ExcelImportResultDTO;
import com.evil.application.pojo.dto.queue.QueueContentDTO;
import com.evil.application.pojo.entity.ApplicationForm;
import com.evil.common.application.dto.order.OrderPageDataRespDTO;
import com.evil.common.application.enums.queue.QueueStatusEnum;
import com.evil.common.core.entity.PageModel;
import com.evil.common.file.dto.FileRespDTO;
import org.apache.poi.ss.usermodel.Workbook;

import java.util.List;
import java.util.function.BiConsumer;

/**
 * 应用订单操作接口
 *
 * @author liyang
 * @date 2022-08-08 00:00
 */
public interface AppOrderOperationService {

    /**
     * 处理导入
     *
     * @param workbook        workbook
     * @param applicationForm applicationForm
     * @return ExcelImportResultDTO
     */
    ExcelImportResultDTO handleExcelImport(Workbook workbook, ApplicationForm applicationForm);

    /**
     * 导出处理
     *
     * @param pageModel   导出参数
     * @param handleQueue 队列同步处理
     * @return FileRespDTO
     */
    FileRespDTO excelExport(PageModel<OrderExportReqDTO> pageModel, BiConsumer<QueueStatusEnum, QueueContentDTO> handleQueue);

    /**
     * 处理导出
     *
     * @param workbook     workbook
     * @param controlBases 控件列表
     * @param orders       对应的数据列表
     * @param exportAnnex  是否导出附件
     * @return ExcelExportResultDTO
     */
    ExcelExportResultDTO handleExcelExport(Workbook workbook, List<ControlBaseInfoDTO> controlBases, List<OrderPageDataRespDTO> orders, boolean exportAnnex);
}
